/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package servidorRMI;

import interfaces.AddObservador;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import javafx.scene.control.TextArea;

/**
 *
 * @author Lucas - CLasse responsavel pelo RMI... 
 */
public class ServerRMI extends Thread {

    private TextArea ta;
    public final int PORTA = 5555;
    private Registry r;

    public ServerRMI() {
    }

    @Override
    public void run() {
        try {
            r = LocateRegistry.createRegistry(PORTA);
            //Observador
            AddObservador add = (AddObservador) UnicastRemoteObject
                    .exportObject(new AddObservadorImp(), PORTA);

            //registra os serviços normais...
            r.rebind("servidorBanco", new MessageImp(ta));
            r.rebind("servidorJogador", new PlayJogadorImp());
            r.rebind("servidorJogadas", new JogadasImp());

            //registra os observadores...
            r.rebind("Observador", add);
        } catch (Exception e) {
            e.printStackTrace();
        }
        super.run();
    }

    public void startServerRMI(TextArea ta) {
        this.ta = ta;
        start();
    }

    /*
     * Remove as interfaces do RMI do jogo e fecha o mesmo...
     */
    public void desligarServerRMI() {
        try {
            r.unbind("servidorBanco");
            r.unbind("servidorJogador");
            r.unbind("Observador");
            r.unbind("servidorJogadas");
            System.exit(0);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
